/*
 * @Author: 郑先炟 zhengxd@internal.ths.com.cn
 * @Date: 2022-12-31 21:39:13
 * @LastEditors: 郑先炟 zhengxd@internal.ths.com.cn
 * @LastEditTime: 2022-12-31 21:39:17
 * @FilePath: \跨年快乐_files\js\fsreen.js\fscreen.js
 * @Description: 
 * 
 * Copyright (c) 2022 by 郑先炟 zhengxd@internal.ths.com.cn, All Rights Reserved. 
 */
// A manual UMD build of Fscreen: https://github.com/rafrex/fscreen

(function(global) {
  'use strict';

  var key = {
      fullscreenEnabled: 0,
      fullscreenElement: 1,
      requestFullscreen: 2,
      exitFullscreen: 3,
      fullscreenchange: 4,
      fullscreenerror: 5
  };

  var webkit = ['webkitFullscreenEnabled', 'webkitFullscreenElement', 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitfullscreenchange', 'webkitfullscreenerror'];

  var moz = ['mozFullScreenEnabled', 'mozFullScreenElement', 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozfullscreenchange', 'mozfullscreenerror'];

  var ms = ['msFullscreenEnabled', 'msFullscreenElement', 'msRequestFullscreen', 'msExitFullscreen', 'MSFullscreenChange', 'MSFullscreenError'];

  // so it doesn't throw if no window or document
  var doc = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};

  var vendor = 'fullscreenEnabled' in doc && Object.keys(key) || webkit[0] in doc && webkit || moz[0] in doc && moz || ms[0] in doc && ms || [];

  var fscreen = {
      requestFullscreen: function requestFullscreen(element) {
          return element[vendor[key.requestFullscreen]]();
      },
      requestFullscreenFunction: function requestFullscreenFunction(element) {
          return element[vendor[key.requestFullscreen]];
      },
      get exitFullscreen() {
          return doc[vendor[key.exitFullscreen]].bind(doc);
      },
      addEventListener: function addEventListener(type, handler, options) {
          return doc.addEventListener(vendor[key[type]], handler, options);
      },
      removeEventListener: function removeEventListener(type, handler) {
          return doc.removeEventListener(vendor[key[type]], handler);
      },
      get fullscreenEnabled() {
          return Boolean(doc[vendor[key.fullscreenEnabled]]);
      },
      set fullscreenEnabled(val) {},
      get fullscreenElement() {
          return doc[vendor[key.fullscreenElement]];
      },
      set fullscreenElement(val) {},
      get onfullscreenchange() {
          return doc[('on' + vendor[key.fullscreenchange]).toLowerCase()];
      },
      set onfullscreenchange(handler) {
          return doc[('on' + vendor[key.fullscreenchange]).toLowerCase()] = handler;
      },
      get onfullscreenerror() {
          return doc[('on' + vendor[key.fullscreenerror]).toLowerCase()];
      },
      set onfullscreenerror(handler) {
          return doc[('on' + vendor[key.fullscreenerror]).toLowerCase()] = handler;
      }
  };

  global.fscreen = fscreen;
})(window);